export interface RadioOption {
  label: string
  value: string
}


export class DialogParams {
  onHandle = (index: number) => {
  }

  constructor(onHandle: (index: number) => void) {
    this.onHandle = onHandle
  }
}


export type LoanType = 'Commercial' | 'ProvidentFund' | 'Combination'

export type InterestRateType = 'LPR' | 'Benchmark'

export type CalculationMethod = 'EqualPrincipalAndInterest' | 'EqualPrincipal'

/**
 * 房贷计算器函数，用于计算贷款年限内每个月的还款信息
 * @param {number} loanAmount - 贷款金额
 * @param {number} loanYears - 贷款年限
 * @param {string} loanType - 贷款类型，取值为 LoanType 中的常量
 * @param {string} interestRateType - 利率方式，取值为 InterestRateType 中的常量
 * @param {number} [lprRate] - LPR 利率，仅在 interestRateType 为 LPR 时需要
 * @param {number} [basisPoints] - 基点，仅在 interestRateType 为 LPR 时需要
 * @param {string} calculationMethod - 计算方式，取值为 CalculationMethod 中的常量
 * @returns {Array<Object>} - 包含每个月还款信息的数组
 */

export interface MortgageLoanForm {
  loanType: LoanType
  /**
   * 贷款金额
   */
  loanAmount: number,

  /**
   * 贷款年限
   */
  loanYears: number,

  /**
   * 利率方式
   *  LPR 利率和基准利率
   */
  interestRateType: InterestRateType,

  /**
   * 计算方式
   * 等额本息: 'EqualPrincipalAndInterest'
   * 等额本金: 'EqualPrincipal'
   */
  calculationMethod: CalculationMethod,

  /**
   * lpr
   */
  lprRate?: number,

  /**
   * 基点
   */
  basisPoints?: number
  /**
   * 公积金贷款金额
   */
  providentFundLoanAmount?: number
  /**
   * 公积金贷款利率
   */
  providentFundInterestRate?: number
}

/**
 * 每月还款信息接口
 */
export interface IMonthlyPaymentInfo {
  /**
   * 每月还款金额，即每月需向贷款机构偿还的总金额
   */
  monthlyPayment: number;

  /**
   * 当月偿还本金，指每月还款中用于偿还贷款本金的部分
   */
  principalRepayment: number;

  /**
   * 当月偿还利息，指每月还款中用于支付贷款利息的部分
   */
  interestRepayment: number;

  /**
   * 剩余本金，指偿还当月款项后，贷款还剩余未偿还的本金金额
   */
  remainingPrincipal: number;
}

// 定义每月还款信息的接口
export class MonthlyPaymentInfo implements IMonthlyPaymentInfo {
  monthlyPayment: number
  principalRepayment: number
  interestRepayment: number
  remainingPrincipal: number

  constructor(monthlyPayment, principalRepayment, interestRepayment, remainingPrincipal) {
    this.monthlyPayment = monthlyPayment;
    this.principalRepayment = principalRepayment;
    this.interestRepayment = interestRepayment;
    this.remainingPrincipal = remainingPrincipal;
  }
}